package br.com.esporte.apresentacao.infra.componente.itemDiaPraticadoGrupo;

import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.request.resource.PackageResourceReference;

import br.com.esporte.apresentacao.grupoEsporteGrupo.partida.cadastro.PaginaCadastroPartida;
import br.com.esporte.apresentacao.infra.componente.ComponenteGenerico;
import br.com.esporte.apresentacao.infra.componente.menu.MenuEnum;
import br.com.esporte.apresentacao.infra.generic.Pagina;
import br.com.esporte.negocios.entidade.imp.DiaPraticadoGrupo;
import br.com.esporte.negocios.entidade.imp.Partida;
import br.com.esporte.negocios.util.Util;

/**
 * 
 * @author Milton Domingues
 *
 */
public class ItemDiaPraticadoGrupo extends ComponenteGenerico {

	private static final long serialVersionUID = 1L;

	private DiaPraticadoGrupo diaPraticadoGrupo;
	private Pagina paginaRetorno;
	private MenuEnum menuHome;

	public ItemDiaPraticadoGrupo(String id, DiaPraticadoGrupo diaPraticadoGrupo, Pagina paginaRetorno, MenuEnum menuHome) {
		super(id);
		this.setDiaPraticadoGrupo(diaPraticadoGrupo);
		this.setMenuHome(menuHome);
		this.setPaginaRetorno(paginaRetorno);
		this.montarComponente();
	}

	private ListView<Partida> criarListaPartidas(){
		ListView<Partida> lista = new ListView<Partida>("listaPartidas", this.diaPraticadoGrupo.getPartidas()) {

			private static final long serialVersionUID = 568613589946275514L;

			@Override
			protected void populateItem(ListItem<Partida> item) {
				Partida partida = item.getModelObject();
				item.add(new Label("horaInicio", Util.converterHoraToString(partida.getHoraInicio())));
				item.add(new Label("horaFim", Util.converterHoraToString(partida.getHoraFim())));
			}
		};
		return lista;
	}

	public DiaPraticadoGrupo getDiaPraticadoGrupo() {
		return this.diaPraticadoGrupo;
	}

	public MenuEnum getMenuHome() {
		return this.menuHome;
	}

	public Pagina getPaginaRetorno() {
		return this.paginaRetorno;
	}

	@Override
	public void montarComponente() {
		this.add(new Label("data", Util.converterDataToString(this.getDiaPraticadoGrupo().getDataHoraInicio())));
		this.add(new Label("horaInicio", Util.converterHoraToString(this.getDiaPraticadoGrupo().getDataHoraInicio())));
		this.add(new Label("horaFim", Util.converterHoraToString(this.getDiaPraticadoGrupo().getDataHoraFim())));
		this.add(new Link<Partida>("adicionar") {

			private static final long serialVersionUID = 1L;

			@Override
			public void onClick() {
				Partida partida = new Partida();
				partida.setDiaPraticado(ItemDiaPraticadoGrupo.this.getDiaPraticadoGrupo());
				this.setResponsePage(new PaginaCadastroPartida(partida, ItemDiaPraticadoGrupo.this.getDiaPraticadoGrupo().getGrupo(), ItemDiaPraticadoGrupo.this.getPaginaRetorno(), ItemDiaPraticadoGrupo.this.getMenuHome()));
			}
		}.add(new Label("labelLink", "adicionar")));
		this.add(this.criarListaPartidas());
	}

	/**
	 * Css do componente
	 */
	@Override
	public void renderHead(IHeaderResponse response) {
		response.renderCSSReference(new PackageResourceReference(ItemDiaPraticadoGrupo.class, "css/ItemDiaPraticadoGrupo.css"));
	}

	public void setDiaPraticadoGrupo(DiaPraticadoGrupo diaPraticadoGrupo) {
		this.diaPraticadoGrupo = diaPraticadoGrupo;
	}

	public void setMenuHome(MenuEnum menuHome) {
		this.menuHome = menuHome;
	}

	public void setPaginaRetorno(Pagina paginaRetorno) {
		this.paginaRetorno = paginaRetorno;
	}

}
